MongoDB হল একটি NoSQL ডেটাবেস, যা ডকুমেন্ট-ভিত্তিক ডেটা স্টোরেজ সিস্টেম। Java অ্যাপ্লিকেশনগুলিতে MongoDB এর ইন্টিগ্রেশন টেস্টিং করার সময়, প্রকৃত MongoDB ইনস্টল করার পরিবর্তে Embedded MongoDB ব্যবহার করা যেতে পারে। এটি একটি ইন-মেমরি ডেটাবেস তৈরি করে, যা টেস্টিং চলাকালীন MongoDB এর মতো কাজ করে, কিন্তু এটি সরাসরি ডেটাবেস সার্ভারে সংযোগ স্থাপন না করেই কাজ করে। এতে করে টেস্টিং প্রক্রিয়া দ্রুত, নিরাপদ এবং সাশ্রয়ী হয়।
এখানে, আমরা Embedded MongoDB এর মাধ্যমে Java MongoDB ইন্টিগ্রেশন টেস্টিং কিভাবে সহজে করা যায়, তা নিয়ে আলোচনা করব।
Embedded MongoDB কী?
Embedded MongoDB হল একটি MongoDB ডেটাবেস যা Java অ্যাপ্লিকেশনের মধ্যে ইন-মেমরি চালানো হয়। এটি ডেভেলপারদের MongoDB এর সাথে কাজ করার জন্য একটি সহজ উপায় প্রদান করে, যেখানে কোনো MongoDB সার্ভার ইনস্টল বা কনফিগার করার প্রয়োজন হয় না। এই প্রযুক্তি সাধারণত integration testing এর জন্য ব্যবহৃত হয় যাতে টেস্টিং চলাকালীন MongoDB এর মতো একটি পরিবেশ পাওয়া যায়।
Embedded MongoDB এর সুবিধা
- সহজ ইনস্টলেশন: Embedded MongoDB ব্যবহার করার জন্য MongoDB সার্ভার ইনস্টল করতে হয় না।
- টেস্টিং এ সাশ্রয়: এটি ডেটাবেস সার্ভারে নির্ভর না করে MongoDB এর কার্যকারিতা পরীক্ষা করতে সাহায্য করে।
- র্যাপিড টেস্টিং: MongoDB ইনস্টলেশন বা কনফিগারেশন ছাড়া সরাসরি টেস্টিং করা যায়, যার ফলে টেস্ট রান করা দ্রুত হয়।
- পরিবর্তনশীল ডেটাবেস: ইনস্ট্যান্সের সময়কাল শেষ হওয়ার পর সমস্ত ডেটা মুছে ফেলা হয়, যা টেস্টিংয়ের জন্য নিরাপদ।
Java তে Embedded MongoDB সেটআপ
১. Maven ডিপেনডেন্সি
Embedded MongoDB ব্যবহারের জন্য প্রথমে আপনার প্রজেক্টে উপযুক্ত ডিপেনডেন্সি অন্তর্ভুক্ত করতে হবে। De.flapdoodle.embed.mongo একটি জনপ্রিয় লাইব্রেরি যা Embedded MongoDB চালানোর জন্য ব্যবহৃত হয়।
Maven Dependency:
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>2.2.0</version>
<scope>test</scope>
</dependency>
এটি আপনার প্রজেক্টে Embedded MongoDB চালাতে সক্ষম করবে।
২. Embedded MongoDB ইনিশিয়ালাইজ করা
এখন, Embedded MongoDB সেটআপ করার জন্য একটি MongoDB ইনস্ট্যান্স চালু করতে হবে। এটি টেস্টিংয়ের জন্য MongoDB সার্ভার চালাবে, এবং টেস্টের শেষে এটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
import de.flapdoodle.embed.mongo.MongodExecutable;
import de.flapdoodle.embed.mongo.MongodProcess;
import de.flapdoodle.embed.mongo.config.MongodConfig;
import de.flapdoodle.embed.mongo.config.Net;
import de.flapdoodle.embed.mongo.MongodStarter;
import de.flapdoodle.embed.mongo.runtime.Mongod;
import static de.flapdoodle.embed.mongo.distribution.Version.Main.V4_0;
public class EmbeddedMongoDBTest {
private MongodExecutable mongodExecutable;
private MongodProcess mongodProcess;
public void startEmbeddedMongoDB() throws Exception {
// MongoDB ইনস্ট্যান্স কনফিগারেশন
MongodStarter starter = MongodStarter.getDefaultInstance();
MongodConfig mongodConfig = MongodConfig.builder()
.version(V4_0)
.net(new Net("localhost", 27017, false)) // localhost:27017 এ MongoDB চালাবে
.build();
// MongoDB ইনস্ট্যান্স শুরু করা
mongodExecutable = starter.prepare(mongodConfig);
mongodProcess = mongodExecutable.start();
}
public void stopEmbeddedMongoDB() {
if (mongodProcess != null) {
mongodProcess.stop();
}
}
}
এখানে, MongoDB একটি ইন-মেমরি পরিবেশে চালু হচ্ছে এবং টেস্টের জন্য ব্যবহারযোগ্য হচ্ছে।
৩. MongoDB এর সাথে টেস্টিং করা
এখন যে Embedded MongoDB চালু হয়েছে, আপনি MongoDB ড্রাইভার ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারেন এবং টেস্টিং করতে পারেন। টেস্টের শেষে MongoDB ইনস্ট্যান্সটি বন্ধ করে দেওয়া হবে।
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import static org.junit.Assert.*;
public class EmbeddedMongoDBTest {
private MongodExecutable mongodExecutable;
private MongodProcess mongodProcess;
public void startEmbeddedMongoDB() throws Exception {
MongodStarter starter = MongodStarter.getDefaultInstance();
MongodConfig mongodConfig = MongodConfig.builder()
.version(V4_0)
.net(new Net("localhost", 27017, false))
.build();
mongodExecutable = starter.prepare(mongodConfig);
mongodProcess = mongodExecutable.start();
}
public void stopEmbeddedMongoDB() {
if (mongodProcess != null) {
mongodProcess.stop();
}
}
@org.junit.Test
public void testMongoDBConnection() throws Exception {
startEmbeddedMongoDB();
// MongoDB এর সাথে সংযোগ
MongoDatabase database = MongoClients.create("mongodb://localhost:27017").getDatabase("testDatabase");
database.createCollection("testCollection");
// ডেটা ইনসার্ট করা
database.getCollection("testCollection").insertOne(new Document("name", "John"));
// ডেটা রিটার্ন পরীক্ষা করা
long count = database.getCollection("testCollection").countDocuments();
assertEquals(1, count);
stopEmbeddedMongoDB();
}
}
এখানে, আমরা MongoClients ব্যবহার করে MongoDB এর সাথে সংযোগ স্থাপন করেছি এবং টেস্ট কেসে একটি ডকুমেন্ট ইনসার্ট করার পর তার কাউন্ট যাচাই করেছি।
Embedded MongoDB টেস্টিংয়ের জন্য একটি শক্তিশালী এবং সাশ্রয়ী উপায়, যা ডেটাবেস সার্ভার ইনস্টলেশনের পরিবর্তে ইন-মেমরি MongoDB ডেটাবেস চালাতে সাহায্য করে। এটি Java অ্যাপ্লিকেশনগুলির জন্য MongoDB ইন্টিগ্রেশন টেস্টিংকে সহজ এবং কার্যকরী করে তোলে। De.flapdoodle.embed.mongo লাইব্রেরি ব্যবহার করে, আপনি MongoDB ইনস্ট্যান্স শুরু, কনফিগার এবং বন্ধ করতে পারেন, এবং সম্পূর্ণ টেস্টিং পরিবেশ সহজে প্রস্তুত করতে পারেন।
Read more